package com.mvvm.start

import android.view.View
import android.webkit.JavascriptInterface
import androidx.lifecycle.lifecycleScope
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
import com.mvvm.start.base.BaseApplication
import com.mvvm.start.base.base.BaseActivity
import com.mvvm.start.base.utils.*
import com.mvvm.start.common.mvvm.v.dialog.ProtocolDialog
import com.mvvm.start.common.mvvm.vm.PublicViewModle
import com.mvvm.start.common.utils.RouteUtils
import com.mvvm.start.databinding.ActivitySplashAdactivityBinding
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.lang.ref.WeakReference


/**
 * @author lmy
 * @功能: 腾讯广点通开屏广告 闪屏页
 * @Creat 2021/5/31 11:24 上午
 * @Compony 465008238@qq.com
 */
class SplashADActivity : BaseActivity<PublicViewModle, ActivitySplashAdactivityBinding>() {
    override fun initView() {
        /**
         * (修改这个选项，可以设置不同模式)
         * 使用下面三个参数，可以使内容显示在system bar的下面，防止system bar显示或
         * 隐藏时，Activity的大小被resize。
         */
        ImmersionBar.with(this)
//            .statusBarDarkFont(false)   //状态栏字体是深色，不写默认为亮色
//            .fitsSystemWindows(true)    //解决状态栏和布局重叠问题，任选其一，默认为false，当为true时一定要指定statusBarColor()，不然状态栏为透明色，还有一些重载方法
//            .statusBarColor(R.color.color_2C2A2A)
            .hideBar(BarHide.FLAG_HIDE_NAVIGATION_BAR)
            .init()
        //是否第一次打开显示隐私协议弹窗
        if (CommonUtils.getIsPrivacyShow()) {
            lifecycleScope.launch {
                delay(800)
                RouteUtils.startMainMainActivity()
                finish()
            }
        } else {
            /**
             * 显示隐私协议弹窗
             */
            ProtocolDialog(this).apply {
                getWebView().addJavascriptInterface(
                    JavaJSInterface(this@SplashADActivity),
                    "App"
                )
                setCancelAndSureClick({ finish() }) {
                    //同意初始化SDK 拒绝直接推出APP
                    BaseApplication.application.initDepends()
                    SPUtils.getInstance(this@SplashADActivity)
                        .put(ConstantUtils.PRIVACY_IS_SHOW, 1)
                    RouteUtils.startMainMainActivity()
                    finish()
                }
            }.show()

        }
    }

    override fun initData() {
        super.initData()
    }

    override fun initObserve() {
    }

    internal class JavaJSInterface(context: SplashADActivity) {
        private val x5WebViewActivity: WeakReference<SplashADActivity> = WeakReference(context)

        //通过这个@JavascriptInterface转化成绑定的“App”对象下的同名函数，js代码可以直接调用
        @JavascriptInterface
        fun toProtocolPage(data: Int) {
            //支付结果回调
            x5WebViewActivity.get()?.toProtocolPage(data)
        }

    }

    private fun toProtocolPage(data: Int) {
//        if (data == 1) {
//            ktstartActivity<WebActivity> {
//                putExtra("title", "用户协议")
//                putExtra("url", "http://app.zlfc.mobi/app/com.zlfcapp.auto/user.html")
//            }
//        } else if (data == 2) {
//            ktstartActivity<WebActivity> {
//                putExtra("title", "隐私政策")
//                putExtra("url", "http://app.zlfc.mobi/app/com.zlfcapp.auto/privacy.html")
//            }
//        }
    }

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (hasFocus) {
            window.decorView.systemUiVisibility = (
                    ////(修改这个选项，可以设置不同模式)
                    //                        //使用下面三个参数，可以使内容显示在system bar的下面，防止system bar显示或
                    //                        //隐藏时，Activity的大小被resize。
                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
                            View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
                            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                            // 隐藏导航栏和状态栏
                            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
        }
    }
}